{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "运⾏课上给出的notebook的代码：\n",
    "1. 对连续型特征，可以用哪个函数可视化其分布？（给出你最常用的一个即可），并根据代码运行结果给出示例。\n",
    "2. 对两个连续型特征，可以用哪个函数得到这两个特征之间的相关性？根据代码运行结果，给出示例。\n",
    "3. 如果发现特征之间有较强的相关性，在选择线性回归模型时应该采取什么措施。\n",
    "4. 当采用带正则的模型以及采用随机梯度下降优化算法时，需要对输入（连续型）特征进行去量纲预处理。课程代码给出了用标准化（StandardScaler）的结果，请改成最小最大缩放（MinMaxScaler）去量纲 ，并重新训练最小二乘线性回归、岭回归、和Lasso模型。\n",
    "5. 代码中给出了岭回归（RidgeCV）和Lasso（LassoCV）超参数（alpha_）调优的过程，请结合两个最佳模型以及最小二乘线性回归模型的结果，给出什么场合应该用岭回归，什么场合用Lasso，什么场合用最小二乘。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第一问："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 代入库\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入数据\n",
    "df = pd.read_csv(r'C:\\Users\\PPL\\Documents\\CSDN\\线性回归\\4dddbf90ddedf16733fae96149d96a89\\第二章：线性回归【216924】特征工程：共享单车骑行量预测\\day.csv',\n",
    "                parse_dates = ['dteday'],\n",
    "                index_col = 'instant')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([734138., 734228., 734319., 734411., 734503., 734594., 734685.,\n",
       "        734777., 734869.]),\n",
       " <a list of 9 Text xticklabel objects>)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from numpy import median\n",
    "sns.relplot(data = df, x = 'dteday', y = 'cnt', kind = 'line', estimator = median)\n",
    "\n",
    "plt.xticks(rotation = 90)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第二问"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x273efedaf88>"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corrMatt = df[['temp', 'atemp']].corr()\n",
    "mask = np.array(corrMatt)\n",
    "mask[np.tril_indices_from(mask)] = False\n",
    "sns.heatmap(corrMatt, mask = mask)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第三问\n",
    "\n",
    "当两个特征呈现较强相关性的时候，选择模型应该避免选择OLS模型。可以选择岭回归模型或者lasso"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "file_path = r'C:\\Users\\PPL\\Documents\\CSDN\\线性回归\\4dddbf90ddedf16733fae96149d96a89\\第二章：线性回归【216924】特征工程：共享单车骑行量预测\\day.csv'\n",
    "df = pd.read_csv(file_path, \n",
    "                 parse_dates = ['dteday']\n",
    "                 )\n",
    "col = df.columns\n",
    "\n",
    "obj_col = ['season', 'mnth', 'weekday', \n",
    "       'weathersit']\n",
    "for col in obj_col:\n",
    "    fig = plt.figure()\n",
    "    sns.catplot(data = df, x = col, y = 'cnt', kind = 'box')\n",
    "    \n",
    "non_obj_col = ['temp', 'atemp', 'hum', 'windspeed']\n",
    "cat_col = ['yr', 'holiday', 'workingday']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 独热编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_obj_col = df[obj_col].astype('object')\n",
    "x_obj_col = pd.get_dummies(x_obj_col)\n",
    "\n",
    "x_non_obj_col = df[non_obj_col]\n",
    "x_cat_col = df[cat_col]\n",
    "y = df['cnt']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 去量纲"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import MinMaxScaler\n",
    "x_mm = MinMaxScaler()\n",
    "x_non_obj_col = x_mm.fit_transform(x_non_obj_col)\n",
    "\n",
    "x_non_obj_col = pd.DataFrame(x_non_obj_col, columns = non_obj_col)\n",
    "fe_data = pd.concat([x_non_obj_col, x_cat_col, x_obj_col], axis = 1, ignore_index = False)\n",
    "fe_data['instant'] = df['instant']\n",
    "fe_data['cnt'] = y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 输出文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fe_data.to_csv(r'C:\\Users\\PPL\\Documents\\CSDN\\线性回归\\4dddbf90ddedf16733fae96149d96a89\\第二章：线性回归【216924】特征工程：共享单车骑行量预测\\FE_bike2.csv', index = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The RMSE of training set is:  746.788936549963\n",
      "The RMSE of test set is:  802.4166178310545\n",
      "The R2 of training st is:  0.8493942766914564\n",
      "The R2 of test st is:  0.8302920943008816\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Alpha is: 1.0\n",
      "The RMSE of Training Set is: 746.5494326811878\n",
      "The RMSE of Test Set is: 796.6156154004767\n",
      "The R2 of Training Set is: 0.8494908632033573\n",
      "The R2 of Test Set is: 0.8327370022430952\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Las_alpha is: 1.8328086880880277\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The RMSE of training set is: 746.3101320132259\n",
      "The RMSE of test set is: 802.9308312451498\n",
      "The R2 of training set is: 0.8495873368269851\n",
      "The R2 of test set is: 0.8300745164465544\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import RidgeCV, LassoCV, ElasticNetCV\n",
    "from sklearn.metrics import r2_score, mean_squared_error\n",
    "\n",
    "data = pd.read_csv(r'C:\\Users\\PPL\\Documents\\CSDN\\线性回归\\4dddbf90ddedf16733fae96149d96a89\\第二章：线性回归【216924】特征工程：共享单车骑行量预测\\FE_bike2.csv')\n",
    "data.head()\n",
    "\n",
    "y = data['cnt']\n",
    "X = data.drop(['cnt', 'instant'], axis = 1)\n",
    "feat_columns = X.columns\n",
    "\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 2, test_size = 0.2)\n",
    "\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "lr = LinearRegression()\n",
    "\n",
    "# 训练模型\n",
    "lr.fit(X_train, y_train)\n",
    "\n",
    "# 存储预测数据\n",
    "lr_train_pred = lr.predict(X_train)\n",
    "lr_test_pred = lr.predict(X_test)\n",
    "\n",
    "\n",
    "\n",
    "lr_coefs = pd.DataFrame({'features': list(feat_columns), 'coef': list((lr.coef_.T))})\n",
    "\n",
    "\n",
    "\n",
    "rmse_train_set = np.sqrt(mean_squared_error(y_train, lr_train_pred))\n",
    "rmse_test_set =  np.sqrt(mean_squared_error(y_test, lr_test_pred)) \n",
    "\n",
    "print('The RMSE of training set is: ', rmse_train_set)\n",
    "print('The RMSE of test set is: ', rmse_test_set)\n",
    "\n",
    "r2_train_set = r2_score(y_train, lr_train_pred)\n",
    "r2_test_set = r2_score(y_test, lr_test_pred)\n",
    "\n",
    "print('The R2 of training st is: ', r2_train_set)\n",
    "print('The R2 of test st is: ', r2_test_set)\n",
    "\n",
    "coefs = pd.Series(lr.coef_, index = feat_columns)\n",
    "imp_coefs = pd.concat([coefs.sort_values(ascending = True).head(10), \n",
    "                      coefs.sort_values(ascending = True).tail(10)])\n",
    "imp_coefs.plot(kind = 'barh')\n",
    "plt.title('Coefficents in OLS Model')\n",
    "plt.show()\n",
    "\n",
    "### RigdeCV\n",
    "\n",
    "alphas = [0.01, 0.1, 1, 10, 100, 1000]\n",
    "ridge_pred = RidgeCV(alphas = alphas, store_cv_values = True)\n",
    "\n",
    "ridge_pred.fit(X_train, y_train)\n",
    "\n",
    "alpha = ridge_pred.alpha_\n",
    "print('Alpha is: ' + str(alpha))\n",
    "ridge_train_pred = ridge_pred.predict(X_train)\n",
    "ridge_test_pred = ridge_pred.predict(X_test)\n",
    "\n",
    "rmse_train_set = np.sqrt(mean_squared_error(y_train, ridge_train_pred))\n",
    "rmse_test_set = np.sqrt(mean_squared_error(y_test, ridge_test_pred))\n",
    "print('The RMSE of Training Set is: ' + str(rmse_train_set))\n",
    "print('The RMSE of Test Set is: ' + str(rmse_test_set))\n",
    "\n",
    "r2_train_set = r2_score(y_train, ridge_train_pred)\n",
    "r2_test_set = r2_score(y_test, ridge_test_pred)\n",
    "print('The R2 of Training Set is: ' + str(r2_train_set))\n",
    "print('The R2 of Test Set is: ' + str(r2_test_set))\n",
    "\n",
    "coef_ridge = pd.Series(ridge_pred.coef_, index = feat_columns)\n",
    "imp_coef_ridge = pd.concat([coef_ridge.sort_values().head(10), \n",
    "                           coef_ridge.sort_values().tail(10)])\n",
    "imp_coef_ridge.plot(kind = 'barh')\n",
    "plt.title('Coefficents in Ridge Model')\n",
    "plt.show()\n",
    "\n",
    "ridge_mse_mean = np.mean(ridge_pred.cv_values_, axis = 0)\n",
    "fig = plt.figure()\n",
    "plt.plot(np.log10(alphas), ridge_mse_mean)\n",
    "plt.title('Alpha in Ridge Model')\n",
    "plt.show()\n",
    "ridge_pred.cv_values_.shape\n",
    "\n",
    "\n",
    "### Lasso\n",
    "\n",
    "lasso_obj = LassoCV()\n",
    "\n",
    "lasso_obj.fit(X_train, y_train)\n",
    "\n",
    "las_pred_train = lasso_obj.predict(X_train) \n",
    "las_pred_test =  lasso_obj.predict(X_test)\n",
    "\n",
    "alpha_las = lasso_obj.alpha_\n",
    "print('Las_alpha is: ' + str(alpha_las))\n",
    "\n",
    "coef_las = pd.Series(lasso_obj.coef_, index = feat_columns)\n",
    "imp_coef_las = pd.concat([coef_las.sort_values().head(10),\n",
    "                      coef_las.sort_values().tail(10)])\n",
    "imp_coef_las.plot(kind = 'barh')\n",
    "plt.title('Coefficients in Lasso')\n",
    "plt.show()\n",
    "\n",
    "RMSE_las_train = np.sqrt(mean_squared_error(y_train, las_pred_train))\n",
    "RMSE_las_test = np.sqrt(mean_squared_error(y_test, las_pred_test))\n",
    "\n",
    "print('The RMSE of training set is: ' + str(RMSE_las_train))\n",
    "print('The RMSE of test set is: ' + str(RMSE_las_test))\n",
    "\n",
    "r2_las_train = r2_score(y_train, las_pred_train)\n",
    "r2_las_test = r2_score(y_test, las_pred_test) \n",
    "\n",
    "print('The R2 of training set is: ' + str(r2_las_train))\n",
    "print('The R2 of test set is: ' + str(r2_las_test))\n",
    "\n",
    "mse_las = np.mean(lasso_obj.mse_path_, axis = 1)\n",
    "fig = plt.figure()\n",
    "plt.plot(np.log10(lasso_obj.alphas_), mse_las)\n",
    "plt.title('Alpha in Lasso')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 第五问\n",
    "\n",
    "结合第四问以及代码所显示的结果，我觉得岭回归在多数情况下都会比较好用，原因如下：\n",
    "1. 通过加入正则可以防止模型过拟合；\n",
    "2. 可以避免相关性过大的特征导致特征系数过大，导致模型不稳定；\n",
    "\n",
    "而对简单线性模型，我们可以使用最小二乘模型进行回归；\n",
    "\n",
    "对特征过多，以及误差较大的数据集，使用lasso可以减少误差的影响，并减少多余的特征。\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
